package com.children.growth.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDateTime;

/**
 * 心理健康评估实体类
 * 
 * @author children
 * @since 1.0.0
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("mental_health")
public class MentalHealth {

    /**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 用户ID
     */
    @TableField("user_id")
    private Long userId;

    /**
     * 评估类型：1-情绪评估，2-行为评估，3-社交评估，4-学习评估
     */
    @TableField("assessment_type")
    private Integer assessmentType;

    /**
     * 评估日期
     */
    @TableField("assessment_date")
    private LocalDateTime assessmentDate;

    /**
     * 情绪状态：1-开心，2-平静，3-难过，4-愤怒，5-焦虑
     */
    @TableField("emotion_state")
    private Integer emotionState;

    /**
     * 情绪分数（0-100）
     */
    @TableField("emotion_score")
    private Integer emotionScore;

    /**
     * 行为评分（0-100）
     */
    @TableField("behavior_score")
    private Integer behaviorScore;

    /**
     * 社交评分（0-100）
     */
    @TableField("social_score")
    private Integer socialScore;

    /**
     * 学习评分（0-100）
     */
    @TableField("learning_score")
    private Integer learningScore;

    /**
     * 综合评分（0-100）
     */
    @TableField("overall_score")
    private Integer overallScore;

    /**
     * 评估详情（JSON格式）
     */
    @TableField("assessment_details")
    private String assessmentDetails;

    /**
     * 建议和指导
     */
    @TableField("suggestions")
    private String suggestions;

    /**
     * 预警级别：0-正常，1-轻度，2-中度，3-重度
     */
    @TableField("warning_level")
    private Integer warningLevel;

    /**
     * 是否需要关注：0-否，1-是
     */
    @TableField("needs_attention")
    private Integer needsAttention;

    /**
     * 家长确认状态：0-未确认，1-已确认
     */
    @TableField("parent_confirmed")
    private Integer parentConfirmed;

    /**
     * 创建时间
     */
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;

    /**
     * 逻辑删除标识：0-未删除，1-已删除
     */
    @TableLogic
    @TableField("deleted")
    private Integer deleted;
} 